# -*-coding: utf-8 -*-

##
 # Esse arquivo é parte do Software Encainador
 # 
 # Copyright (C) 2011-$AnoCorrente$ Dyego Ítallo Silva Ferreira
 # Copyright (C) 2011-$AnoCorrente$ Marcos José Ferreira Neto
 # Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 # Copyright (C) 2011-$AnoCorrente$ Rogério Silva dos Santos
 # 
 # Encainador é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 # de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 # conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 # na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 # 
 # Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 # se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 # Boston, MA  02110-1301  USA
 # 
 # Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 # contato nos e-mails <dyegoitallo@gmail.com>, <marcosjfneto@gmail.com>, <barbosa.edrd@gmail.com>, <roger.silva23@hotmail.com>.
##

from sys import exit
from animacao_menu import *
from historico_de_ganhadores import recordes_ler

def mousepassando(Botao_N, Botao_P, largura_img, altura_img):
    if largura_img < pygame.mouse.get_pos()[0] < largura_img + Botao_N.get_size()[0] and altura_img < pygame.mouse.get_pos()[1] < altura_img + Botao_N.get_size()[1]:
        Botao = Botao_P
        if pygame.mouse.get_pressed()[0] == 1:
            mouse_pressionado = True
        else:
            mouse_pressionado = False
    else:
        Botao = Botao_N
        mouse_pressionado = False
    return Botao, (largura_img, altura_img), mouse_pressionado

def tela_iniciarjogo():
    branco = (255, 255, 255)
    cinza = (205, 205, 205)

    caixa_texto = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Digite seu nome.png")
    Botao_IniciarJogar_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Iniciar_Jogo_N.png")
    Botao_IniciarJogar_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Iniciar_Jogo_P.png")

    mapa_de_teclas_min = {K_q: 'q', K_w: 'w', K_e: 'e', K_r: 'r',
                          K_t: 't', K_y: 'y', K_u: 'u', K_i: 'i',
                          K_o: 'o', K_p: 'p', K_a: 'a', K_s: 's',
                          K_d: 'd', K_f: 'f', K_g: 'g', K_h: 'h',
                          K_j: 'j', K_k: 'k', K_l: 'l', K_z: 'z',
                          K_x: 'x', K_c: 'c', K_v: 'v', K_b: 'b',
                          K_n: 'n', K_m: 'm',

                          K_SPACE: ' ', K_COMMA: ',', K_MINUS: '-',
                          K_PERIOD: '.', K_SLASH: '/', K_COLON: ':',
                          K_SEMICOLON: ';'}




    mapa_de_teclas_mai = {K_SPACE: ' '}
    for x in mapa_de_teclas_min.keys():
        if x is not K_SPACE:
            mapa_de_teclas_mai[x] = mapa_de_teclas_min[x].upper()



    pygame.key.set_repeat(100, 100)

    nome = ''
    mapa_de_teclas = mapa_de_teclas_min

    menu = False
    while True:
        for evento in pygame.event.get():
            if evento.type == QUIT:
                exit()

            if evento.type == KEYDOWN:
                if evento.key in mapa_de_teclas:
                    nome += mapa_de_teclas[evento.key]
                if evento.key == K_BACKSPACE:
                    nome = nome[:-1]

                if evento.key == K_CAPSLOCK:
                    mapa_de_teclas = mapa_de_teclas_mai
                else:
                    mapa_de_teclas = mapa_de_teclas_min

        Botao_IniciarJogar, Posicao_IniciarJogar, mousepressionado_IniciarJogar = mousepassando(Botao_IniciarJogar_N, Botao_IniciarJogar_P, largura - Botao_IniciarJogar_N.get_size()[0], altura - Botao_IniciarJogar_N.get_size()[1])
        if mousepressionado_IniciarJogar == True:
            break
        nome = nome[:15]
        texto = pygame.font.SysFont("arial", 30).render(nome, 1, preto)

        tela.fill(cinza)
        tela.blit(caixa_texto, (largura/2 - caixa_texto.get_size()[0]/2, altura/2 - caixa_texto.get_size()[1]/2))
        tela.blit(Botao_IniciarJogar, Posicao_IniciarJogar)
        tela.blit(texto, (largura/2 - 100, altura/2))
        pygame.display.update()
    return nome


def menu():
    Tela_Instrucoes = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Tela_Menu_Instruções.png")
    Tela_Vencedores = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Tela_Menu_Vencedores.png")
    Tela_Opcoes = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Tela_Menu_Opcoes.png")
    Tela_Creditos = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Tela_Menu_Creditos.png")
    Tela_MaisInformacoes = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Tela_Menu_MaisInformacoes.png")

    Botao_Jogar_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Jogar.png")
    Botao_Jogar_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Jogar_P.png")
    Botao_Instrucoes_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Instrucoes.png")
    Botao_Instrucoes_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Instrucoes_P.png")
    Botao_Creditos_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Creditos.png")
    Botao_Creditos_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Creditos_P.png")
    Botao_MaisInformacoes_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Mais_Informacoes_N.png")
    Botao_MaisInformacoes_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Mais_Informacoes_P.png")
    Botao_MenuPrincipal_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "MenuPrincipal.png")
    Botao_MenuPrincipal_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "MenuPrincipal_P.png")
    Botao_Vencedores_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Histórico.png")
    Botao_Vencedores_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Histórico_P.png")
    Botao_Sair_N = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Sair.png")
    Botao_Sair_P = pygame.image.load("imagens" + os.sep + "Menu" + os.sep + "Sair_P.png")

    branco = (255, 255, 255)

    musica = pygame.mixer.Sound("sons" + os.sep + "musica_menu.wav")

    def botao_pressionado(Tela):
        while True:
            for evento in pygame.event.get():
                if evento.type == QUIT:
                    exit()

            Botao_MenuPrincipal, Posicao_MenuPrincipal, mousepressionado_MenuPrincipal = mousepassando(Botao_MenuPrincipal_N, Botao_MenuPrincipal_P, 830, 545)

            if mousepressionado_MenuPrincipal == True:
                break

            tela.fill(preto)
            tela.blit(Tela, (0,0))
            tela.blit(Botao_MenuPrincipal, Posicao_MenuPrincipal)
            pygame.display.update()

    def tela_recordes():
        texto = recordes_ler()
        colocacao = range(len(texto))
        pontuacao = range(len(texto))
        nomes = range(len(texto))

        while True:
            for evento in pygame.event.get():
                if evento.type == QUIT:
                    exit()

            Botao_MenuPrincipal, Posicao_MenuPrincipal, mousepressionado_MenuPrincipal = mousepassando(Botao_MenuPrincipal_N, Botao_MenuPrincipal_P, 830, 545)
            if mousepressionado_MenuPrincipal == True:
                break

            titulo_nome = pygame.font.Font("fontes" + os.sep + 'Datacut.ttf', 30).render("Nome", 1, preto)
            titulo_pontos = pygame.font.Font("fontes" + os.sep + 'Datacut.ttf', 30).render("Pontos", 1, preto)

            if texto != ["","",""]:
                cont = 0
                for rec in texto:
                    colocacao[cont] = pygame.font.Font("fontes" + os.sep + "fonte.ttf", 30).render(rec[0], 1, preto)
                    nomes[cont] = pygame.font.Font("fontes" + os.sep + "fonte.ttf", 30).render(rec[1], 1, preto)
                    pontuacao[cont] = pygame.font.Font("fontes" + os.sep + "fonte.ttf", 30).render(rec[2], 1, preto)
                    cont += 1

            tela.fill(branco)
            tela.blit(Tela_Vencedores, (0, 0))
            tela.blit(Botao_MenuPrincipal, Posicao_MenuPrincipal)

            tela.blit(titulo_nome, (200, 230))
            tela.blit(titulo_pontos, (750, 230))
            if texto != ["","",""]:
                for cont in range(len(texto)):
                    tela.blit(colocacao[cont], (120, 270 + 50 * cont))
                    tela.blit(nomes[cont], (200, 270 + 50 * cont))
                    tela.blit(pontuacao[cont], (750, 270 + 50 * cont))
            pygame.display.update()
    animacao_inicial()

    musica.play(-1)

    while True:
        for evento in pygame.event.get():
            if evento.type == QUIT:
                exit()

        Botao_Jogar, Posicao_Jogar, mousepressionado_Jogar = mousepassando(Botao_Jogar_N, Botao_Jogar_P, 140, 230)
        Botao_Instrucoes, Posicao_Instrucoes, mousepressionado_Instrucoes = mousepassando(Botao_Instrucoes_N, Botao_Instrucoes_P, 350, 230)
        Botao_Vencedores, Posicao_Vencedores, mousepressionado_Vencedores = mousepassando(Botao_Vencedores_N, Botao_Vencedores_P, 350, 330)
        Botao_Creditos, Posicao_Creditos, mousepressionado_Creditos = mousepassando(Botao_Creditos_N, Botao_Creditos_P, 140, 330)
        Botao_MaisInformacoes, Posicao_MaisInformacoes, mousepressionado_MaisInformacoes = mousepassando(Botao_MaisInformacoes_N, Botao_MaisInformacoes_P, 140, 430)
        Botao_Sair, Posicao_Sair, mousepressionado_Sair = mousepassando(Botao_Sair_N, Botao_Sair_P, 20, 580)

        if mousepressionado_Jogar == True:
            musica.fadeout(3000)
            nome = tela_iniciarjogo()
            ir_menu = False
            print nome
            break

        elif mousepressionado_Instrucoes == True:
            botao_pressionado(Tela_Instrucoes)

        elif mousepressionado_Vencedores == True:
            tela_recordes()

        elif mousepressionado_Creditos == True:
            botao_pressionado(Tela_Creditos)

        elif mousepressionado_MaisInformacoes == True:
            botao_pressionado(Tela_MaisInformacoes)

        elif mousepressionado_Sair == True:
            exit()

        tela.fill(preto)
        tela.blit(Tela_Menu, (0, 0))

        for x in n_animacoes:
            cano = pygame.transform.rotate(animacao_canos[x - 1], animacao_angulos[x - 1] * 90)
            tela.blit(cano, (largura - Cano_L.get_size()[0], altura - Cano_L.get_size()[1] * x))

        for x in range(2, 10):
            cano = pygame.transform.rotate(animacao_canos[x + 5], animacao_angulos[x + 5] * 90)
            tela.blit(cano, (largura - Cano_L.get_size()[0] * x, altura - Cano_L.get_size()[1]))

        tela.blit(Botao_Jogar, Posicao_Jogar)
        tela.blit(Botao_Instrucoes, Posicao_Instrucoes)
        tela.blit(Botao_Vencedores, Posicao_Vencedores)
        tela.blit(Botao_Creditos, Posicao_Creditos)
        tela.blit(Botao_MaisInformacoes, Posicao_MaisInformacoes)
        tela.blit(Botao_Sair, Posicao_Sair)

        pygame.display.update()

    return ir_menu, nome
